package com.co.notaweb.bussines;

import java.util.List;

import javax.ejb.Stateless;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import com.co.notaweb.entities.Docente;

/**
 * @author PC
 * @version 1.0
 * @created 13-nov-2011 12:14:24
 */
@Stateless
@TransactionAttribute(TransactionAttributeType.MANDATORY)
public class DocenteBussines implements IDocenteBussinesLocal {
	@PersistenceContext(unitName = "notaweb")
	private EntityManager em;

	public DocenteBussines() {

	}

	public void finalize() throws Throwable {

	}

	/**
	 * 
	 * @param docente
	 */
	public void create(Docente docente) {
		em.persist(docente);

	}

	/**
	 * 
	 * @param docente
	 */
	public void delete(Docente docente) {
		em.remove(em.find(docente.getClass(), docente.getId()));
	}

	/**
	 * 
	 * @param docente
	 */
	public void edit(Docente docente) {
		em.merge(docente);
	}

	/**
	 * 
	 * @param id
	 */
	public Docente find(long id) {
		return em.find(Docente.class, id);
	}

	public List<Docente> consultarDocentePorColegio(long idColegio) {
		Query query = em.createNamedQuery("Docente.consultarDocentePorColegio");
		query.setParameter("idColegio", idColegio);
		return query.getResultList();
	}

	public List<Docente> consultarDocentesPorNotIds(List<Long> idsDocente) {
		if (idsDocente != null && idsDocente.isEmpty()) {
			idsDocente.add(0L);
		}
		Query query = em
				.createNamedQuery("Docente.consultarDocentesPorNotIds");
		query.setParameter("idsDocente", idsDocente);
		return query.getResultList();
	}
	
	public List<Docente> consultarDocentesPorIds(List<Long> idsDocente) {
		if (idsDocente != null && idsDocente.isEmpty()) {
			idsDocente.add(0L);
		}
		Query query = em
				.createNamedQuery("Docente.consultarDocentesPorIds");
		query.setParameter("idsDocente", idsDocente);
		return query.getResultList();
	}
	
}